package com.qf.mq.work;

import com.qf.mq.utils.MqUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

public class Send {
    private final static String QUEUE_NAME = "work";
    public static void main(String[] argv) throws Exception {

        // 获取连接对象
        final Connection connection = MqUtils.getConnection();
        // 创建 channel对象
        final Channel channel = connection.createChannel();

        // 声明要使用的队列，并设置队列的相关属性
        /**
         * @param queue the name of the queue
         * @param durable 对列是不是在随mq服务器重启之后还存在，true代表持久化，存在；false，重启后不存在。
         * @param exclusive 声明的队列是否被当前连接独占，true代表独占（其他消费者无法访问该队列），false不独占，一般应该设置为false
         * @param autoDelete 是否允许mq服务器自动删除该队列，true允许、false不允许，一般设置为false
         * @param arguments other properties (construction arguments) for the queue
         */
        channel.queueDeclare(QUEUE_NAME, true, false, false, null);

        String message = "Hello World again!";

        /**
         *   @param exchange 交换机的名字，如果是空串，代表发送给默认交换机
         *   @param routingKey the routing key， 交换机发送该消息的依据；如果写的是队列名，并且交换机是默认交换机，那么代表把该消息发给这个名字的队列
         *   @param props other properties for the message - routing headers etc
         *   @param body the message body，消息体
         */
        for (int i=0;i<12;i++) {
            channel.basicPublish("", QUEUE_NAME, null, (message+i).getBytes());
        }
        System.out.println(" [x] Sent '" + message + "'");

        channel.close();
        connection.close();

    }
}
